\relax 
\providecommand\hyper@newdestlabel[2]{}
\providecommand*\new@tpo@label[2]{}
\catcode 95\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax 
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand*\HyPL@Entry[1]{}
\HyPL@Entry{0<</P()>>}
\babel@aux{english}{}
\HyPL@Entry{4<</S/D>>}
\@writefile{toc}{\contentsline {chapter}{\numberline {1}引言}{1}{chapter.1}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {1.1}背景}{1}{section.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.2}条件与限制}{1}{section.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.3}定义}{1}{section.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 课程}{1}{section*.3}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 课程提供}{2}{section*.4}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 课程目录}{2}{section*.5}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 全体教师}{2}{section*.6}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 财务系统}{2}{section*.7}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 分数}{2}{section*.8}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 教授}{2}{section*.9}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 成绩单}{2}{section*.10}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 名册}{2}{section*.11}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 学生}{2}{section*.12}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 时间表}{2}{section*.13}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 成绩单}{2}{section*.14}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1.4}背景资料}{2}{section.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {2}模块设计}{3}{chapter.2}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\newlabel{ch:moduledesign}{{2}{3}{模块设计}{chapter.2}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2.1}模块划分依据}{3}{section.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2.2}模块结构与功能描述}{3}{section.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Routes}{3}{subsection.2.2.1}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {1}{\ignorespaces 路由示例.代码第一行定义路由，设置URL为'/'，表示根路径。第2-7行为与该路由绑定的view function，其中第7行return 语句使用render\_template语句，将参数greeting传递到html模板中，将其展示给用户。路由可以接收参数，可以使用redirect函数重定向到另一个URL，可以在view function前加入decorator，例如$@login\_reqired$等。\relax }}{3}{listing.caption.16}\protected@file@percent }
\newlabel{code:routedemo}{{1}{3}{路由示例.代码第一行定义路由，设置URL为'/'，表示根路径。第2-7行为与该路由绑定的view function，其中第7行return 语句使用render\_template语句，将参数greeting传递到html模板中，将其展示给用户。路由可以接收参数，可以使用redirect函数重定向到另一个URL，可以在view function前加入decorator，例如$@login\_reqired$等。\relax }{listing.caption.16}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Controller}{3}{subsection.2.2.2}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces MVC模式的简单介绍实际上可细分为routes,model,view和controller四个模块。在Flask框架中，每一个route与一个controller联系在一起，即一个route绑定一个view function，路由确定页面的URL，而view funciton处理这个页面的操作。Models负责从数据库中提取数据，对其进行操作和整理，将其传递到某一个页面。Views即为用户看到的界面，在Flask框架的设计中，这部分是由HTML和Jinja2提供基本的支持，另外需要CSS,Bootstrap和Javascript等工具的支持。\relax }}{4}{figure.caption.15}\protected@file@percent }
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
\newlabel{fig:mvc}{{2.1}{4}{MVC模式的简单介绍实际上可细分为routes,model,view和controller四个模块。在Flask框架中，每一个route与一个controller联系在一起，即一个route绑定一个view function，路由确定页面的URL，而view funciton处理这个页面的操作。Models负责从数据库中提取数据，对其进行操作和整理，将其传递到某一个页面。Views即为用户看到的界面，在Flask框架的设计中，这部分是由HTML和Jinja2提供基本的支持，另外需要CSS,Bootstrap和Javascript等工具的支持。\relax }{figure.caption.15}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.3}Models}{5}{subsection.2.2.3}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {2}{\ignorespaces 定义消息箱模型，其为关系数据库中的一个表(关系)\relax }}{5}{listing.caption.17}\protected@file@percent }
\newlabel{code:modeldemo}{{2}{5}{定义消息箱模型，其为关系数据库中的一个表(关系)\relax }{listing.caption.17}{}}
\@writefile{lol}{\contentsline {listing}{\numberline {3}{\ignorespaces 在view function中提取数据库中的数据，并进行操作\relax }}{5}{listing.caption.18}\protected@file@percent }
\newlabel{code:modeldemowithcontroller}{{3}{5}{在view function中提取数据库中的数据，并进行操作\relax }{listing.caption.18}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2.4}Views}{5}{subsection.2.2.4}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {4}{\ignorespaces 模板实例.Jinja2提供了自己的页面格局控制，在其中可以使用python语法实现for loop和if else控制流。此外，模板可以进行继承，Flask-Wtf提供了表单支持。\relax }}{7}{listing.caption.19}\protected@file@percent }
\newlabel{code:viewdemo}{{4}{7}{模板实例.Jinja2提供了自己的页面格局控制，在其中可以使用python语法实现for loop和if else控制流。此外，模板可以进行继承，Flask-Wtf提供了表单支持。\relax }{listing.caption.19}{}}
\@writefile{toc}{\contentsline {chapter}{\numberline {3}代码设计}{8}{chapter.3}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\newlabel{ch:codedesign}{{3}{8}{代码设计}{chapter.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}后端代码}{8}{section.3.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.1}数据库模块}{8}{subsection.3.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.2}表单}{8}{subsection.3.1.2}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {5}{\ignorespaces Flask表单类的示例.这是一个用于用户登录的表单类，某些表单项需要对数据进行约束，可通过validators等参数进行设置\relax }}{8}{listing.caption.20}\protected@file@percent }
\newlabel{code:formdemo}{{5}{8}{Flask表单类的示例.这是一个用于用户登录的表单类，某些表单项需要对数据进行约束，可通过validators等参数进行设置\relax }{listing.caption.20}{}}
\@writefile{lol}{\contentsline {listing}{\numberline {6}{\ignorespaces 获取表单数据示例.当form.validate\_on\_submit()函数返回True时，表单被提交，后端对其数据进行处理\relax }}{9}{listing.caption.21}\protected@file@percent }
\newlabel{code:getformdatademo}{{6}{9}{获取表单数据示例.当form.validate\_on\_submit()函数返回True时，表单被提交，后端对其数据进行处理\relax }{listing.caption.21}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1.3}后端主体}{9}{subsection.3.1.3}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {7}{\ignorespaces 对应用对象本身的一部分配置操作.例如，将应用与数据库等对象绑定，将蓝图注册到应用中等.\relax }}{9}{listing.caption.22}\protected@file@percent }
\newlabel{code:createapp}{{7}{9}{对应用对象本身的一部分配置操作.例如，将应用与数据库等对象绑定，将蓝图注册到应用中等.\relax }{listing.caption.22}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}前端代码}{10}{section.3.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}模板代码}{10}{subsection.3.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}静态文件}{10}{subsection.3.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {4}数据库设计}{11}{chapter.4}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {4.1}数据库总体结构}{11}{section.4.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {4.2}数据库逻辑设计}{11}{section.4.2}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces 数据库逻辑设计.其中每个table里带下划线的属性为该table的primary key.\relax }}{12}{figure.caption.23}\protected@file@percent }
\newlabel{fig:databaseer}{{4.1}{12}{数据库逻辑设计.其中每个table里带下划线的属性为该table的primary key.\relax }{figure.caption.23}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.3}数据库物理设计}{13}{section.4.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.1}教授模板类}{13}{subsection.4.3.1}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {8}{\ignorespaces 教授模板类\relax }}{14}{listing.caption.24}\protected@file@percent }
\newlabel{code:professormodel}{{8}{14}{教授模板类\relax }{listing.caption.24}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.2}学生模板类}{14}{subsection.4.3.2}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {9}{\ignorespaces 学生模板类\relax }}{15}{listing.caption.25}\protected@file@percent }
\newlabel{code:studentmodel}{{9}{15}{学生模板类\relax }{listing.caption.25}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.3}管理员模板类}{15}{subsection.4.3.3}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {10}{\ignorespaces 管理员模板类\relax }}{16}{listing.caption.26}\protected@file@percent }
\newlabel{code:registrarmodel}{{10}{16}{管理员模板类\relax }{listing.caption.26}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.4}课程模板类}{16}{subsection.4.3.4}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {11}{\ignorespaces 课程模板类\relax }}{16}{listing.caption.27}\protected@file@percent }
\newlabel{code:coursemodel}{{11}{16}{课程模板类\relax }{listing.caption.27}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.5}账单模板类}{16}{subsection.4.3.5}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {12}{\ignorespaces 账单模板类\relax }}{17}{listing.caption.28}\protected@file@percent }
\newlabel{code:billmodel}{{12}{17}{账单模板类\relax }{listing.caption.28}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.6}先修课程模板类}{17}{subsection.4.3.6}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {13}{\ignorespaces 先修课程模板类\relax }}{17}{listing.caption.29}\protected@file@percent }
\newlabel{code:prerequisitemodel}{{13}{17}{先修课程模板类\relax }{listing.caption.29}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.7}授课模板类}{17}{subsection.4.3.7}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {14}{\ignorespaces 授课模板类\relax }}{17}{listing.caption.30}\protected@file@percent }
\newlabel{code:teachesmodel}{{14}{17}{授课模板类\relax }{listing.caption.30}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.8}上课模板类}{18}{subsection.4.3.8}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {15}{\ignorespaces 上课模板类\relax }}{18}{listing.caption.31}\protected@file@percent }
\newlabel{code:takesmodel}{{15}{18}{上课模板类\relax }{listing.caption.31}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.9}消息箱模板类}{18}{subsection.4.3.9}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {16}{\ignorespaces 消息箱模板类\relax }}{18}{listing.caption.32}\protected@file@percent }
\newlabel{code:inputboxmodel}{{16}{18}{消息箱模板类\relax }{listing.caption.32}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3.10}课程段模板类}{18}{subsection.4.3.10}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {17}{\ignorespaces 课程段模板类\relax }}{19}{listing.caption.33}\protected@file@percent }
\newlabel{code:sectionmodel}{{17}{19}{课程段模板类\relax }{listing.caption.33}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4.4}数据库管理要求}{19}{section.4.4}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {5}用户界面设计}{20}{chapter.5}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\newlabel{ch:viewdesign}{{5}{20}{用户界面设计}{chapter.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.1}用户界面设计原则}{20}{section.5.1}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces 页面的总体结构关系:用户进入系统时处于main.index界面,这个时候是未登录状态，系统为用户提供唯一的接口，即"登录"。用户点击登录按钮后转到auth.login页面，在这个页面，用户填写登录表单，提交后，后端处理登录信息，并根据用户名自动确认用户身份。若身份验证成功，页面转到相应身份的home页面。若验证失败，则根据失败原因提示错误信息，页面停留在auth.login，并要求用户重新填写表单，再次登录。当用户验证成功转到自己的主页之后，用户有唯一的接口回到main.index，即"退出登录"，而其他所有接口都不会使用户离开其身份所属的蓝图，保证了系统安全性。\relax }}{20}{figure.caption.34}\protected@file@percent }
\newlabel{fig:overallarchitecture}{{5.1}{20}{页面的总体结构关系:用户进入系统时处于main.index界面,这个时候是未登录状态，系统为用户提供唯一的接口，即"登录"。用户点击登录按钮后转到auth.login页面，在这个页面，用户填写登录表单，提交后，后端处理登录信息，并根据用户名自动确认用户身份。若身份验证成功，页面转到相应身份的home页面。若验证失败，则根据失败原因提示错误信息，页面停留在auth.login，并要求用户重新填写表单，再次登录。当用户验证成功转到自己的主页之后，用户有唯一的接口回到main.index，即"退出登录"，而其他所有接口都不会使用户离开其身份所属的蓝图，保证了系统安全性。\relax }{figure.caption.34}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.2}交互式菜单设计}{21}{section.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}学生页面}{21}{subsection.5.2.1}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces 学生蓝图的接口设计.其中学生主页、选课页面、消息、查看成绩单和账单系统均在导航栏；导航栏还包括退出登录接口，图中未画出。\relax }}{22}{figure.caption.35}\protected@file@percent }
\newlabel{fig:studentview}{{5.2}{22}{学生蓝图的接口设计.其中学生主页、选课页面、消息、查看成绩单和账单系统均在导航栏；导航栏还包括退出登录接口，图中未画出。\relax }{figure.caption.35}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}教师页面}{23}{subsection.5.2.2}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces 教师蓝图的接口设计.其中选课、消息和录入成绩接口均在导航栏导航栏还包括退出登录接口，图中未画出。；\relax }}{23}{figure.caption.36}\protected@file@percent }
\newlabel{fig:professorview}{{5.3}{23}{教师蓝图的接口设计.其中选课、消息和录入成绩接口均在导航栏导航栏还包括退出登录接口，图中未画出。；\relax }{figure.caption.36}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}管理员页面}{24}{subsection.5.2.3}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces 学生蓝图的接口设计.其中管理学生信息、管理教师信息以及取消课程接口均在导航栏；导航栏还包括退出登录接口，图中未画出。\relax }}{24}{figure.caption.37}\protected@file@percent }
\newlabel{fig:registrarview}{{5.4}{24}{学生蓝图的接口设计.其中管理学生信息、管理教师信息以及取消课程接口均在导航栏；导航栏还包括退出登录接口，图中未画出。\relax }{figure.caption.37}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5.3}布局设计}{24}{section.5.3}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {6}输入／输出设计}{25}{chapter.6}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {6.1}输入设计}{25}{section.6.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.1}HTTP请求}{25}{subsection.6.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1.2}表单的填写和提交}{25}{subsection.6.1.2}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces LoginForm.用于用户登录\relax }}{25}{table.caption.38}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.2}{\ignorespaces DepostForm.用于学生充值\relax }}{25}{table.caption.39}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.3}{\ignorespaces GradeForm.用于教师提交学生成绩\relax }}{25}{table.caption.40}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.4}{\ignorespaces NewStudentForm.用于管理员添加学生\relax }}{26}{table.caption.41}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.5}{\ignorespaces UpdateStudentForm.用于管理员修改学生信息\relax }}{26}{table.caption.42}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.6}{\ignorespaces StudentForm.用于查询学生，查询后可用于显示学生信息或者删除学生\relax }}{26}{table.caption.43}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.7}{\ignorespaces NewProfessorForm.用于管理员添加教师表单\relax }}{26}{table.caption.44}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.8}{\ignorespaces UpdateProfessorForm.用于管理员更新教师信息表单\relax }}{27}{table.caption.45}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {6.9}{\ignorespaces ProfessorForm.用于查询教师，查询后可用于查看教师信息或者删除教师\relax }}{27}{table.caption.46}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {6.2}输出设计}{27}{section.6.2}\protected@file@percent }
\@writefile{toc}{\contentsline {chapter}{\numberline {7}程序模块设计}{28}{chapter.7}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {chapter}{\numberline {8}安全性设计}{31}{chapter.8}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {8.1}数据库的安全性}{31}{section.8.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}用户权限的安全性}{31}{subsection.8.1.1}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {18}{\ignorespaces 教师类的部分定义. 教师作为程序的用户身分之一，教师类继承了Flask提供的用户类$UserMixin$，使其具有用户身份的权限；另外，以上代码展示的这部分函数具有验证身份以确定权限的作用。对于学生类和管理员类也有同样的处理。\relax }}{31}{listing.caption.48}\protected@file@percent }
\newlabel{code:userdemo}{{18}{31}{教师类的部分定义. 教师作为程序的用户身分之一，教师类继承了Flask提供的用户类$UserMixin$，使其具有用户身份的权限；另外，以上代码展示的这部分函数具有验证身份以确定权限的作用。对于学生类和管理员类也有同样的处理。\relax }{listing.caption.48}{}}
\@writefile{lol}{\contentsline {listing}{\numberline {19}{\ignorespaces 匿名用户类的定义. 匿名用户的作用是作为登录账户前用户的暂时身份，其不能访问需要登陆才能访问的界面；这里匿名用户类继承了Flask提供的$AnonymousUserMixin$类。其不具备其他任何权限。\relax }}{31}{listing.caption.49}\protected@file@percent }
\newlabel{code:anonymoususerdemo}{{19}{32}{匿名用户类的定义. 匿名用户的作用是作为登录账户前用户的暂时身份，其不能访问需要登陆才能访问的界面；这里匿名用户类继承了Flask提供的$AnonymousUserMixin$类。其不具备其他任何权限。\relax }{listing.caption.49}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.2}用户数据的安全性}{32}{subsection.8.1.2}\protected@file@percent }
\@writefile{lol}{\contentsline {listing}{\numberline {20}{\ignorespaces 对密码hash的部分验证\relax }}{32}{listing.caption.50}\protected@file@percent }
\newlabel{code:hashtest}{{20}{32}{对密码hash的部分验证\relax }{listing.caption.50}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.3}数据库自身的安全性}{32}{subsection.8.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {8.2}接口的安全性}{32}{section.8.2}\protected@file@percent }
\gdef\minted@oldcachelist{,
  default-pyg-prefix.pygstyle,
  default.pygstyle,
  2872582EF90F5FCFCB64751BEB08D6A3C0221C3E50E3E078522C766F688D9595.pygtex,
  49019955766A077760A7C2212D14A4B58AB8704872DA71953A0E2D50909547B6.pygtex,
  CF5A66FBE3DD78FCE38B99904B0CF75EC1F59B33AB6D5A5A2960856DF732AC46.pygtex,
  AA9C9AA4A108436740B9402C59294559B83D9489FE0DF46A95EFD0A62EC0CBD2.pygtex,
  549958463514DD51657B411F9D5DC254500AECD0424ED241E8BDCF132BF05282.pygtex,
  A4E08E435FCED5F1FAA6ED6386948BFBCB7AA61B59C50B42D4EB3453A4189617.pygtex,
  654B49D56D531905FF428EDB19FA84A76292E7AAE9420498046B1626B88E13FF.pygtex,
  D9D50159F3D085D76B4C32798D7BFB1A95959E66B2D71F4697378D7BD7B26EC0.pygtex,
  FAC0B728996A03C9CB13F7C93F0FA271E4560530F8728287A0FBFF8E8E34359E.pygtex,
  8ADB22CFEE6B70A7EDCA5A9CF9BF3F0A74F7D4E1C6DA70E47D011FC6C5BD441A.pygtex,
  E8E72EB22EF93A30542234024C14B11283E8A8C9C57ED6A52CF0226F8A83B0EA.pygtex,
  2E59CE5DE0D315C2CDF849139FDFD819A1F70D0B26DE03910744676A8A757C48.pygtex,
  358028199AE6A545763E26C84DD16BC8D314119C0625C71C3EDA67DE66C048AB.pygtex,
  D4E0034D0EAE8A7C703ECDF4FECB4EDD58D677F5EF0D7C381D534B304CA909F0.pygtex,
  BB3FD1AB6038038EEEDC1415F576FCF411A4F86C5A3382AE126C9E0B0A393D81.pygtex,
  49019955766A077760A7C2212D14A4B58AB8704872DA71953A0E2D50909547B6.pygtex,
  0F1CDDB87AE9194B2CD8507D70F103FFD929F1D71303306B9912F1106520F02D.pygtex,
  A46C77230E9F6805BD6C25145FDC5F4699A8F31D6EEF31E038934C4E6CE5E93C.pygtex,
  7C355567CE2C26E1E623BC28EF61984A8F6D763E3B313CE5777557E09F096F12.pygtex,
  42CBBE0C5045D6F7D04F2650EA777C2CE12A48C8C246D17136DA66B3B8F983A1.pygtex,
  02668F8BC373D3D4EB640148E859F8DA37D782A4C3BB368AB47AB25FD8587820.pygtex}
\@writefile{toc}{\contentsline {chapter}{\numberline {9}方案实施与管理}{33}{chapter.9}\protected@file@percent }
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{lol}{\addvspace {10\p@ }}
\@writefile{toc}{\contentsline {section}{\numberline {9.1}方案实施说明}{33}{section.9.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {9.2}工作任务分解}{33}{section.9.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {9.3}进度安装}{33}{section.9.3}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 第一周}{33}{section*.51}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 第二周}{33}{section*.52}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{\nonumberline 第三周}{33}{section*.53}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {9.4}经费预算与管理}{33}{section.9.4}\protected@file@percent }
\global\@namedef{scr@dte@chapter@lastmaxnumwidth}{10.40242pt}
\global\@namedef{scr@dte@section@lastmaxnumwidth}{18.37402pt}
\global\@namedef{scr@dte@subsection@lastmaxnumwidth}{32.36812pt}
